package com.sinsoft.monitorDemo.dao;

import java.util.ArrayList;
import java.util.List;

import redis.clients.jedis.Jedis;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.sinsoft.monitorDemo.entity.CpuInfo;
import com.sinsoft.monitorDemo.util.JsonUtil;
import com.sinsoft.monitorDemo.util.RedisUtil;
//获取CPu信息
public class CpuInfoDao {
	/**
	 * 通过IP的到Cpu信息
	 * @param ip
	 * @param index
	 * @return
	 */
	public List<CpuInfo> getCpuInfoList(String ip){
		Jedis jedis = RedisUtil.getJedis();
		List<String> jsonList = jedis.lrange("StatusData_" + ip + "_CPU_latest", 0, -1);
		JsonArray jsonArray = null;
		JsonObject jsonObject = null;
		CpuInfo cpuInfo = null;
		List<CpuInfo> cpuInfoList = new ArrayList<CpuInfo>();
		if(jsonList.size()>10){
			for (int i = jsonList.size()-10; i < jsonList.size(); i++) {
				jsonArray = JsonUtil.JsonParse(jsonList.get(i));
				jsonObject = jsonArray.get(0).getAsJsonObject();
				cpuInfo = new CpuInfo(jsonObject.get("cores").getAsInt(), jsonObject.get("processors").getAsInt(), 
						jsonObject.get("used").getAsDouble(), jsonObject.get("user").getAsDouble(), 
						jsonObject.get("system").getAsDouble(), jsonObject.get("idle").getAsDouble(), 
						jsonObject.get("iowait").getAsDouble(), jsonArray.get(1).getAsLong(),ip);
				cpuInfoList.add(cpuInfo);
			}		
		}else{
			for(int i = 1; i < jsonList.size(); i++){
				jsonArray = JsonUtil.JsonParse(jsonList.get(i));
				jsonObject = jsonArray.get(0).getAsJsonObject();
				cpuInfo = new CpuInfo(jsonObject.get("cores").getAsInt(), jsonObject.get("processors").getAsInt(), 
						jsonObject.get("used").getAsDouble(), jsonObject.get("user").getAsDouble(), 
						jsonObject.get("system").getAsDouble(), jsonObject.get("idle").getAsDouble(), 
						jsonObject.get("iowait").getAsDouble(), jsonArray.get(1).getAsLong(),ip);
				cpuInfoList.add(cpuInfo);
			}
		}
		jedis.close();
		return cpuInfoList;		
	}
	
	/**
	 * 得到最新的CPU运行信息
	 * @param ip
	 * @return
	 */
	public CpuInfo getNewCpuInfo(String ip){
		Jedis jedis = RedisUtil.getJedis();
			JsonArray jsonArray = null;
			JsonObject jsonObject = null;
			CpuInfo cpuInfo = null;
			try {
				List<String> jsonList = jedis.lrange("StatusData_" + ip + "_CPU_latest", -1, -1);
				jsonArray = JsonUtil.JsonParse(jsonList.get(0));
				jsonObject = jsonArray.get(0).getAsJsonObject();
				cpuInfo = new CpuInfo(jsonObject.get("cores").getAsInt(), jsonObject.get("processors").getAsInt(), 
						jsonObject.get("used").getAsDouble(), jsonObject.get("user").getAsDouble(), 
						jsonObject.get("system").getAsDouble(), jsonObject.get("idle").getAsDouble(), 
						jsonObject.get("iowait").getAsDouble(), jsonArray.get(1).getAsLong(),ip);
			} catch (Exception e) {
				return new CpuInfo(null, null, null, null, null, null, null, null,ip);
			}finally{	
				jedis.close();
			}
			return cpuInfo;		
	}
	
}
